package com.zhiyou.springcloud.controller;

import static org.mockito.Mockito.RETURNS_DEEP_STUBS;

import java.text.ParseException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.zhiyou.springcloud.bean.Msg;
import com.zhiyou.springcloud.bean.classes;
import com.zhiyou.springcloud.bean.leave;
import com.zhiyou.springcloud.bean.teachers;
import com.zhiyou.springcloud.service.LeaveService;
import com.zhiyou.springcloud.util.Compare;
import com.zhiyou.springcloud.util.days;

@Controller
public class LeaveController {
	@Autowired
	LeaveService leaverService;
	//多条件查询显示请假信息
	@RequestMapping("/getAllLeaves")
	@ResponseBody
	public Msg getAll(Integer lid,String cname,String lreason,Integer approval) throws ParseException {
		System.out.println("123");
		List<leave> list=leaverService.getLeavesByConditions(lid, cname, lreason, approval);
		System.out.println(list.size());
		for(int i=0;i<list.size();i++) {
			String sTime=list.get(i).getStarttime();
			String eTime=list.get(i).getEndtime();
			System.out.println(sTime);
			System.out.println(eTime);
			String[] st=sTime.split(" ");
			System.out.println(st[0]);
			String et=eTime.substring(0, 10);
			System.out.println(et);
			int d=days.caculateTotalTime(st[0], et);
			System.out.println(d);
			list.get(i).setDays(d);
		}
		return Msg.cuccess().add("list", list);
	}
	
	//根据教师id获取所在班级，这个数据是放在请假管理的班级下拉框中的数据
	@RequestMapping("/getClassByTid")
	@ResponseBody
	public Msg getClassByTid(Integer tid) {
		List<classes> list=leaverService.selectCnameByTid(tid);
		if(list.size()==0) {
			return Msg.fail().add("msg","没有查到班级");
		}
		return Msg.cuccess().add("list", list);
	}
	
	//点击审批通过，将states改为1,将approval改为1
	@RequestMapping("/updateLeaves")
	@ResponseBody
	public Msg updateLeave(Integer lid) {
		//将请假id和请假通过状态传递过来
		int i=-1;
		i=leaverService.updateLeave(lid);
		if (i!=-1) {
			return Msg.cuccess().add("msg","审批成功");
		}else {
			return Msg.fail().add("msg", "审批失败");
		}
	}
	//点击审批不通过，填写不通过原因，将approval改为1，states改成0
	@RequestMapping("/noPassLeaves")
	@ResponseBody
	public Msg noPassLeave(Integer lid,String nopassreason) {
		int i=-1;
		i=leaverService.noPassLeave(lid, nopassreason);
		if (i!=-1) {
			return Msg.cuccess().add("msg", "审批成功");
		}else {
			return Msg.cuccess().add("msg", "审批失败");
		}
	}
	//通过开始时间和结束时间计算请假时长，先获取两个时间，然后比较时间是否合法，
	//然后调用工具类直接返回一个天数
	@RequestMapping("/getDays")
	@ResponseBody
	public Msg getDays(String starttime,String endtime) throws ParseException {
		//默认传过来的时间格式是yyyy-MM-dd HH:mm:ss的
		int i=Compare.compareTime(starttime, endtime);
		//如果i等于-1，说明开始大于结束
		//如果i等于0，说明时间相等
		//如果i等于1，说明结束大于开始
		if (i==-1) {
			return Msg.fail().add("mgs", "开始时间大于结束时间，请重新输入");
		}else if(i==0) {
			return Msg.fail().add("msg", "开始时间等于结束时间，请重新输入");
		}else if(i==1) {
			String st=starttime.substring(0,10);
			String et=endtime.substring(0,10);
			System.out.println(st);
			System.out.println(et);
			int day=days.caculateTotalTime(st,et);
			if(day==0) {
				day=1;
			}
			return Msg.cuccess().add("days",day);
		}
		return Msg.fail().add("msg", "没有比较时间");
	}
	//获取教师表信息
	@RequestMapping("/getAllTeachers")
	@ResponseBody
	public Msg getAllTeachers(){
		List<teachers> list=leaverService.getAllTeachers();
		if(list.size()==0) {
			return Msg.cuccess().add("msg", "没有查询到老师数据");
		}
		return Msg.cuccess().add("list", list);
	}
	//新增请假，内容包括姓名sname，请假原因lreason，病症disease，情况说明information，开始时间，结束时间，请假时长，审批人老师
	//其实新增请假，只需要在请假表中新增数据，然后添加一个学生外键就可以了。
	//Integer cid(这个其实不需要), Integer sid, String lreason, String disease, String information, String starttime, String endtime, Integer tid
	@RequestMapping("/addLeave")
	@ResponseBody
	public Msg addLeave(leave leave) {
		if(leave==null) {
			return Msg.fail();
		}
		int i=0;
		i=leaverService.addLeave(leave);
		if(i!=0) {
			return Msg.cuccess().add("msg", "新增成功");
		}else {
			return Msg.cuccess().add("msg", "新增失败");
		}
	}
}







